package com.demo.java.OD501_550.OD520;

import java.util.Scanner;
import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【最接最大输出功率的设备/查找充电设备组合(B卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146484902
 */
public class OdMain {
    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.nextLine();
        Integer[] p = Arrays.stream(in.nextLine().split(" ")).map(Integer::parseInt).toArray(Integer[]::new);
        int p_max = in.nextInt();

        //dp[i][j] 表示从下标为[0-i]的物品里任意取，放进容量为j的背包，价值总和最大是多少。
        int[][] dp = new int[n + 1][p_max + 1];

        // 初始化, i为0，存放编号0的物品的时候，各个容量的背包所能存放的最大价值。
        for (int j = p_max; j >= p[0]; j--) {
            dp[0][j] = dp[0][j - p[0]] + p[0];
        }

        for (int i = 1; i < n; i++) {  // 遍历物品
            for (int j = 0; j <= p_max; j++) { // 遍历背包容量
                // 背包容量为j，如果物品i的体积，此时dp[i][j]就是dp[i - 1][j]
                if (j < p[i]) {
                    dp[i][j] = dp[i - 1][j];
                } else {
                    dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - p[i]] + p[i]);
                }
            }
        }

        System.out.println(dp[n - 1][p_max]);

    }
}